import numpy as np
from matplotlib import pyplot as plt, axes, font_manager
import matplotlib
import scipy.optimize as opt

Zh_Font = matplotlib.font_manager.FontProperties(fname="../venv/include/SourceHanSansSC-Bold.otf")
plt.rc('font', family='Times New Roman')
plt.rc('font', size=16)
plt.rc('font', weight='bold')
legend_font = {
    'fname': 'C:/Windows/fonts/simhei.ttf',  # 引用系统字体
    'style': 'normal',
    'size': 10,  # 字号
    'weight': "normal",  # 是否加粗，不加粗
}
import random

# 迭代次数 200     时间区间 80
X = []
Y = []
X1 = []
Y1 = []
for i in range(20):
    # 第一阶段曲线（30、20） y 50 - 80   x 0 - 20
    X.append(random.randint(0, 15))
    Y.append(random.randint(50, 65))
    Y1.append(random.randint(70, 80))
for i in range(20):
    # 第二阶段曲线（20、20） y 30 - 50  x 20,40
    X.append(random.randint(15, 30))
    Y.append(random.randint(40, 60))
    Y1.append(random.randint(50, 70))
for i in range(160):
    # 第三阶段曲线（20、160） y 10 - 20  x 40 - 200
    X.append(random.randint(30, 200))
    y = random.randint(39, 40)
    Y.append(y)
    Y1.append(y + random.randint(0, 1))
X.sort(reverse=True)
Y.sort(reverse=False)
X1.sort(reverse=True)
Y1.sort(reverse=False)
xMax = np.array(X).max()
xMin = np.array(X).min()
yMax = np.array(Y).max()
yMin = np.array(Y).min()
plt.xticks(np.arange(0, xMax + 10, 20), fontsize=10, fontproperties=Zh_Font)
plt.yticks(np.arange(0, yMax + 10, 10), fontsize=10, fontproperties=Zh_Font)
plt.title("适应度变化曲线", fontsize=13, fontproperties=Zh_Font)
plt.ylabel('完工时间', fontsize=10, fontproperties=Zh_Font)
plt.xlabel('总群迭代次数', fontsize=10, fontproperties=Zh_Font)

plt.plot(X, Y, label="最小适应度")
plt.plot(X, Y1, label="平均适应度")
plt.legend(fontsize=10, prop=legend_font)
plt.show()
